package com.university.evaluation;
import java.util.Scanner;

public class EggBoxes {
    public static void main(String[] args) {
        // 1. 初始化10个箱子，使用二进制原理分配鸡蛋
        int[] boxes = new int[10];
        int totalEggs = 0;

        // 前9个箱子分别放1, 2, 4, 8, 16, 32, 64, 128, 256个鸡蛋
        for (int i = 0; i < 9; i++) {
            boxes[i] = (int) Math.pow(2, i);
            totalEggs += boxes[i];
        }

        // 第10个箱子放剩余的鸡蛋 (1000 - 511 = 489)
        boxes[9] = 1000 - totalEggs;

        // 输出每个箱子的鸡蛋数
        System.out.println("10个箱子的鸡蛋分配如下：");
        for (int i = 0; i < boxes.length; i++) {
            System.out.println("箱子" + (i + 1) + "：" + boxes[i] + "个鸡蛋");
        }

        // 2. 处理用户输入，找出需要搬走的箱子
        Scanner scanner = new Scanner(System.in);
        System.out.print("\n请输入需要的鸡蛋数(1-1000)：");
        int target = scanner.nextInt();

        // 验证输入有效性
        if (target < 1 || target > 1000) {
            System.out.println("输入无效，请输入1到1000之间的数字");
            return;
        }

        // 找出需要的箱子
        StringBuilder result = new StringBuilder();
        int remaining = target;

        // 从最大的箱子开始检查
        for (int i = boxes.length - 1; i >= 0; i--) {
            if (boxes[i] <= remaining) {
                result.append("箱子").append(i + 1).append("(").append(boxes[i]).append("), ");
                remaining -= boxes[i];
            }
            if (remaining == 0) {
                break;
            }
        }

        // 输出结果
        if (remaining == 0) {
            System.out.println("需要搬走的箱子：" + result.substring(0, result.length() - 2));
            System.out.println("总共：" + target + "个鸡蛋");
        } else {
            System.out.println("无法组合出" + target + "个鸡蛋");
        }

        scanner.close();
    }
}

